﻿#pragma once

// 要在链表的每一个节点中存储联系人数据 
// 那我们就要定义联系人的结构体
#define NAME_MAX 20
#define GENDER_MAX 10
#define TEL_MAX 20
#define ADDR_MAX 100

typedef struct personInfo
{
	char name[NAME_MAX]; // 名字
	char gender[GENDER_MAX]; // 性别
	int age; // 年龄
	char tel[TEL_MAX]; // 电话
	char addr[ADDR_MAX]; // 地址
}peoInfo;

//前置声明 
typedef struct ListNode contact; // 将链表改个名字 改成通讯录的名字

//初始化通讯录
void InitContact(contact** con);//实际调用的是链表的初始化接⼝（可以简单做⼀个头结点的初始化）

//添加通讯录数据
void AddContact(contact** con);// 链表尾插/头插

//删除通讯录数据
void DelContact(contact** con);//链表的删除指定位置的数据

//展示通讯录数据
void ShowContact(contact* con);//链表的打印

//查找通讯录数据
void FindContact(contact* con);

//修改通讯录数据
void ModifyContact(contact** con);

//销毁通讯录数据
void DestroyContact(contact** con);

// 从文件中读取通讯录数据
void LoadContact(contact** con);

// 将通讯录数据写入文件中
void SaveContact(contact* con);